﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ConfrontaTracciati.CLASSI;

namespace ConfrontaTracciati
{
    public class Ctracciato 
    {
        public string path_Dir_TARGET;
        public string path_Dir_MIRROR;
        public string path_Dir_RES;
        public string path_file_TARGET;
        public string path_file_MIRROR;

        public string pathDirBasePrincipale;//directory generale del tipo tracciato
        public string pathDirBaseSecondaria;

        public string nome_tabella;
        //public tracciatiEnum Categoria; //aui
        public string Categoria;
        public string nome_tracciato;   //aui.log

        public string Chiave;//"1-3,6-9"
        public bool UsaChiave = false;

        public int Orfane;
        public int Errate;

        /// <summary>
        /// La chiave deve essere in formato "x-y,n-z"
        /// </summary>
        public Ctracciato()
        {
        }
        
        /// <summary>
        /// La chiave deve essere in formato "x-y,n-z"
        /// </summary>
        public Ctracciato(string categoria,string pNomeTracciato, string tabella, string chiave):this()
        {     
            nome_tabella = tabella;
            nome_tracciato = pNomeTracciato;
            Categoria = categoria;
            Chiave = chiave;
            UsaChiave = string.IsNullOrEmpty(chiave) ? false : true;
            Orfane = 0;
            Errate = 0;

        }//fM

        // funzione che ritoran la chiave del record
        public static string getDatiChiave(string pChiave, string pRecord)
        {
            string chiaveRes = string.Empty;

            if (string.IsNullOrEmpty(pChiave)) return string.Empty;

            int start = pChiave.IndexOf("[");
            int end = pChiave.IndexOf("]");
            if (start >= 0 && end > 0)
            {
                string separatore = pChiave.Substring(start+1, end - start-1);
                pChiave = pChiave.Substring(end+1);
                var arrChiavi = pChiave.Split(',');
                var arrChiavi2 = pRecord.Split(new[] { separatore }, StringSplitOptions.None);
                foreach (var chiave in arrChiavi)
                {
                    chiaveRes += (arrChiavi2[int.Parse(chiave)] + separatore);
                }
            }
            else
            {
                var arrChiavi = pChiave.Split(',');
                int[] arrChiavi2 = null;
                string[] arrTemp = null;

                foreach (var chiave in arrChiavi)
                {
                    arrTemp = chiave.Split('-');
                    arrChiavi2 = new[] { int.Parse(arrTemp[0]), int.Parse(arrTemp[1]) };

                    chiaveRes += pRecord.Substring(arrChiavi2[0], (arrChiavi2[1] - arrChiavi2[0]) + 1);
                }
            }
            return chiaveRes;
                    
        }//fM

    }//fC
}
